
package com.trial.area.permission.dao;

import java.util.List;

import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Repository;

import com.trial.area.common.dao.BaseDao;
import com.trial.area.permission.entity.PermissionVO;
import com.trial.area.permission.entity.RolePermissionVO;
import com.trial.area.permission.entity.RoleVO;
import com.trial.area.permission.param.RolePermissionParam;

/**
 * 权限角色关系表Dao实现类
 *
 * @author 朱国军
 * @version 2016年03月23日 朱国军
 */
@Repository("rolePermissionDao")
public class RolePermissionDao extends BaseDao<RolePermissionVO> {
    
    /**
     * 新增，注：返回的添加的条数，获取主键用entity.getId();
     *
     * @param entity 要增加的权限角色关系表对象
     * @return 返回新增的条数
     */
    public Integer insert(RolePermissionVO entity) {
        return this.getSqlSession().insert("insertRolePermission", entity);
    }

    /**
     * 根据权限ID，角色ID，角色权限关系ID删除权限角色关系表
     *
     * @param roleId 角色ID
     * @param permissionId 权限ID
     * @param rolePermissionId 角色权限关系ID
     * @return
     */
    public Integer deleteRolePermission(String roleId, String permissionId, String rolePermissionId) {
        if (StringUtils.isBlank(roleId) && StringUtils.isBlank(permissionId) && StringUtils.isBlank(rolePermissionId)) {
            throw new RuntimeException("删除用户角色关系时，权限ID，角色ID，角色权限关系ID不能都为空");
        }

        RolePermissionParam param = new RolePermissionParam();
        param.setRoleId(roleId);
        param.setPermissionId(rolePermissionId);
        param.setRolePermissionId(rolePermissionId);
        return this.getSqlSession().delete("deleteRolePermission", param);
    }

    /**
     * 根据权限ID查询对应的角色列表
     *
     * @param permissionId 权限Id
     * @return 权限ID查询对应的角色列表
     */
    public List<RoleVO> queryPermissionRoleList(RolePermissionParam rolePermissionParam) {
    	this.pareParamter("queryPermissionRoleList", rolePermissionParam);
        return this.getSqlSession().selectList("queryPermissionRoleList", rolePermissionParam);
    }
    
    /**
     * 根据角色ID查询对应的权限列表
     *
     * @param roleId 角色Id
     * @return 角色ID查询对应的权限列表
     */
    public List<PermissionVO> queryRolePermissionList(RolePermissionParam rolePermissionParam) {
    	this.pareParamter("queryRolePermissionList", rolePermissionParam);
        return this.getSqlSession().selectList("queryRolePermissionList", rolePermissionParam);
    }
}
